<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: ORB_SLAM2::LoopClosing Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_o_r_b___s_l_a_m2_1_1_loop_closing.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="class_o_r_b___s_l_a_m2_1_1_loop_closing-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ORB_SLAM2::LoopClosing Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Cierre de bucles.  
 <a href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_loop_closing_8h_source.html">LoopClosing.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ORB_SLAM2::LoopClosing:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="class_o_r_b___s_l_a_m2_1_1_loop_closing__coll__graph.svg" width="2828" height="1206"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a8efed418be885643d3c43113ff1d7bb2"><td class="memItemLeft" align="right" valign="top">typedef pair&lt; set&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;, int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a8efed418be885643d3c43113ff1d7bb2">ConsistentGroup</a></td></tr>
<tr class="separator:a8efed418be885643d3c43113ff1d7bb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9ada143a8308ce32990a7c7b5d533ab"><td class="memItemLeft" align="right" valign="top">typedef map&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *, <a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a>, std::less&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;, Eigen::aligned_allocator&lt; std::pair&lt; const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *, <a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a> &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9ada143a8308ce32990a7c7b5d533ab">KeyFrameAndPose</a></td></tr>
<tr class="separator:ae9ada143a8308ce32990a7c7b5d533ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a680d0b255d764754841e622f5af97473"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a680d0b255d764754841e622f5af97473">InsertKeyFrame</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *pKF)</td></tr>
<tr class="memdesc:a680d0b255d764754841e622f5af97473"><td class="mdescLeft">&#160;</td><td class="mdescRight">Agrega nuevos keyframes a la cola de proceso para buscar bucles.  <a href="#a680d0b255d764754841e622f5af97473">More...</a><br /></td></tr>
<tr class="separator:a680d0b255d764754841e622f5af97473"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac242214c60ed66e9432e0457e3fc29ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac242214c60ed66e9432e0457e3fc29ad">isFinished</a> ()</td></tr>
<tr class="memdesc:ac242214c60ed66e9432e0457e3fc29ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informa a otros hilos que <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a> ha terminado.  <a href="#ac242214c60ed66e9432e0457e3fc29ad">More...</a><br /></td></tr>
<tr class="separator:ac242214c60ed66e9432e0457e3fc29ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8efb239cd4b488b12e7f1223c308a4e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa8efb239cd4b488b12e7f1223c308a4e">isFinishedGBA</a> ()</td></tr>
<tr class="separator:aa8efb239cd4b488b12e7f1223c308a4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ddc6674aa54db7d38946f73eb9776f2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4ddc6674aa54db7d38946f73eb9776f2">isRunningGBA</a> ()</td></tr>
<tr class="separator:a4ddc6674aa54db7d38946f73eb9776f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5f7b8a43efa8bc771a5227ed2fbf460"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#af5f7b8a43efa8bc771a5227ed2fbf460">LoopClosing</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html">Map</a> *pMap, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame_database.html">KeyFrameDatabase</a> *pDB, <a class="el" href="namespace_o_r_b___s_l_a_m2.html#a2fafba714858cab1bb18d438e2e83c5d">ORBVocabulary</a> *pVoc, const bool bFixScale)</td></tr>
<tr class="memdesc:af5f7b8a43efa8bc771a5227ed2fbf460"><td class="mdescLeft">&#160;</td><td class="mdescRight">Único constructor invocado por el constructor de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> para crear el singleton.  <a href="#af5f7b8a43efa8bc771a5227ed2fbf460">More...</a><br /></td></tr>
<tr class="separator:af5f7b8a43efa8bc771a5227ed2fbf460"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa271039dcafe7cc053f72ba541bc499b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa271039dcafe7cc053f72ba541bc499b">RequestFinish</a> ()</td></tr>
<tr class="memdesc:aa271039dcafe7cc053f72ba541bc499b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Otro hilo solicita terminar <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>.  <a href="#aa271039dcafe7cc053f72ba541bc499b">More...</a><br /></td></tr>
<tr class="separator:aa271039dcafe7cc053f72ba541bc499b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dc868b9f4b8381a94aae2c85bfec3c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a7dc868b9f4b8381a94aae2c85bfec3c5">RequestReset</a> ()</td></tr>
<tr class="memdesc:a7dc868b9f4b8381a94aae2c85bfec3c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solicita reinicializar el proceso.  <a href="#a7dc868b9f4b8381a94aae2c85bfec3c5">More...</a><br /></td></tr>
<tr class="separator:a7dc868b9f4b8381a94aae2c85bfec3c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a520014f22059056d6256476bccb04471"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471">Run</a> ()</td></tr>
<tr class="memdesc:a520014f22059056d6256476bccb04471"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este proceso.  <a href="#a520014f22059056d6256476bccb04471">More...</a><br /></td></tr>
<tr class="separator:a520014f22059056d6256476bccb04471"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b10a9c18541818c9490a62447ef7f18"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b10a9c18541818c9490a62447ef7f18">RunGlobalBundleAdjustment</a> (unsigned long nLoopKF)</td></tr>
<tr class="memdesc:a4b10a9c18541818c9490a62447ef7f18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bundle adjustment sobre todo el mapa luego de cerrar el bucle.  <a href="#a4b10a9c18541818c9490a62447ef7f18">More...</a><br /></td></tr>
<tr class="separator:a4b10a9c18541818c9490a62447ef7f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa27124f61055c2b5f53497e918195269"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa27124f61055c2b5f53497e918195269">SetLocalMapper</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_local_mapping.html">LocalMapping</a> *pLocalMapper)</td></tr>
<tr class="memdesc:aa27124f61055c2b5f53497e918195269"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registra el mapeador local en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a5eaa1b6d507d9bd138ab0f10a308e3c9" title="Puntero al mapeador local singleton. ">LoopClosing::mpLocalMapper</a>.  <a href="#aa27124f61055c2b5f53497e918195269">More...</a><br /></td></tr>
<tr class="separator:aa27124f61055c2b5f53497e918195269"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20bce54d19c979511043d7c109aa741a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a20bce54d19c979511043d7c109aa741a">SetTracker</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *pTracker)</td></tr>
<tr class="memdesc:a20bce54d19c979511043d7c109aa741a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registra el tracker del sistema.  <a href="#a20bce54d19c979511043d7c109aa741a">More...</a><br /></td></tr>
<tr class="separator:a20bce54d19c979511043d7c109aa741a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac13b01270b4daef9be2a098f82e9f64f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac13b01270b4daef9be2a098f82e9f64f">CheckFinish</a> ()</td></tr>
<tr class="separator:ac13b01270b4daef9be2a098f82e9f64f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0c81e654509eb9384abe5e769db4f41"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac0c81e654509eb9384abe5e769db4f41">CheckNewKeyFrames</a> ()</td></tr>
<tr class="memdesc:ac0c81e654509eb9384abe5e769db4f41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indica si hay keyframes en la cola esperando a ser procesados.  <a href="#ac0c81e654509eb9384abe5e769db4f41">More...</a><br /></td></tr>
<tr class="separator:ac0c81e654509eb9384abe5e769db4f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4fcf814eed5b5dd2aec96454561b078"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078">ComputeSim3</a> ()</td></tr>
<tr class="memdesc:ab4fcf814eed5b5dd2aec96454561b078"><td class="mdescLeft">&#160;</td><td class="mdescRight">Procesa la lista de candidatos intentando corregir su pose.  <a href="#ab4fcf814eed5b5dd2aec96454561b078">More...</a><br /></td></tr>
<tr class="separator:ab4fcf814eed5b5dd2aec96454561b078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa007e0678582ec0de5d71280d23af540"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540">CorrectLoop</a> ()</td></tr>
<tr class="memdesc:aa007e0678582ec0de5d71280d23af540"><td class="mdescLeft">&#160;</td><td class="mdescRight">Corrige el bucle con los encastres elaborados por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>.  <a href="#aa007e0678582ec0de5d71280d23af540">More...</a><br /></td></tr>
<tr class="separator:aa007e0678582ec0de5d71280d23af540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8110ca79cebaf509e378d30e55f1381"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa8110ca79cebaf509e378d30e55f1381">DetectLoop</a> ()</td></tr>
<tr class="memdesc:aa8110ca79cebaf509e378d30e55f1381"><td class="mdescLeft">&#160;</td><td class="mdescRight">Procesa los keyframes de la cola, buscando bucles.  <a href="#aa8110ca79cebaf509e378d30e55f1381">More...</a><br /></td></tr>
<tr class="separator:aa8110ca79cebaf509e378d30e55f1381"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a288545384b48c758f910a4762c873733"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a288545384b48c758f910a4762c873733">ResetIfRequested</a> ()</td></tr>
<tr class="memdesc:a288545384b48c758f910a4762c873733"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reinicializa el objeto si hay una solicitud pendiente para hacerlo.  <a href="#a288545384b48c758f910a4762c873733">More...</a><br /></td></tr>
<tr class="separator:a288545384b48c758f910a4762c873733"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabe9d9b913f36b607c67b0ed0df42a1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aabe9d9b913f36b607c67b0ed0df42a1d">SearchAndFuse</a> (const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9ada143a8308ce32990a7c7b5d533ab">KeyFrameAndPose</a> &amp;CorrectedPosesMap)</td></tr>
<tr class="memdesc:aabe9d9b913f36b607c67b0ed0df42a1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Proyecta los puntos observados en la vecindad del keyframe del bucle, sobre el keyframe actual y vecinos usando las poses corregidas.  <a href="#aabe9d9b913f36b607c67b0ed0df42a1d">More...</a><br /></td></tr>
<tr class="separator:aabe9d9b913f36b607c67b0ed0df42a1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeea102bfacf8538ef605d76e4192a622"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aeea102bfacf8538ef605d76e4192a622">SetFinish</a> ()</td></tr>
<tr class="memdesc:aeea102bfacf8538ef605d76e4192a622"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hace true <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c" title="Marca de proceso terminado. ">LoopClosing::mbFinished</a>, para consultas de otros hilos.  <a href="#aeea102bfacf8538ef605d76e4192a622">More...</a><br /></td></tr>
<tr class="separator:aeea102bfacf8538ef605d76e4192a622"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a6d8de49d49b647c33f3616f4cc95c42c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c">mbFinished</a></td></tr>
<tr class="memdesc:a6d8de49d49b647c33f3616f4cc95c42c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca de proceso terminado.  <a href="#a6d8de49d49b647c33f3616f4cc95c42c">More...</a><br /></td></tr>
<tr class="separator:a6d8de49d49b647c33f3616f4cc95c42c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdfbeff51644bd4c3d2d54c637d95e6c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#acdfbeff51644bd4c3d2d54c637d95e6c">mbFinishedGBA</a></td></tr>
<tr class="memdesc:acdfbeff51644bd4c3d2d54c637d95e6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca exactamente contraria a mbRunningGBA.  <a href="#acdfbeff51644bd4c3d2d54c637d95e6c">More...</a><br /></td></tr>
<tr class="separator:acdfbeff51644bd4c3d2d54c637d95e6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e3dfbee3d1635fe11e600f94b0f60dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a9e3dfbee3d1635fe11e600f94b0f60dc">mbFinishRequested</a></td></tr>
<tr class="memdesc:a9e3dfbee3d1635fe11e600f94b0f60dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca que se ha solicitado la terminación de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>.  <a href="#a9e3dfbee3d1635fe11e600f94b0f60dc">More...</a><br /></td></tr>
<tr class="separator:a9e3dfbee3d1635fe11e600f94b0f60dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11865c48bbad102b5177e4350de71bd4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a11865c48bbad102b5177e4350de71bd4">mbFixScale</a></td></tr>
<tr class="memdesc:a11865c48bbad102b5177e4350de71bd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Siempre false en monocular.  <a href="#a11865c48bbad102b5177e4350de71bd4">More...</a><br /></td></tr>
<tr class="separator:a11865c48bbad102b5177e4350de71bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9bac1131984f7915ab1fdf220912b0b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9bac1131984f7915ab1fdf220912b0b">mbResetRequested</a></td></tr>
<tr class="memdesc:ae9bac1131984f7915ab1fdf220912b0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca de solicitud de reinicialización.  <a href="#ae9bac1131984f7915ab1fdf220912b0b">More...</a><br /></td></tr>
<tr class="separator:ae9bac1131984f7915ab1fdf220912b0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad04c8ddd2135b81fabfa45891ab66add"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ad04c8ddd2135b81fabfa45891ab66add">mbRunningGBA</a></td></tr>
<tr class="memdesc:ad04c8ddd2135b81fabfa45891ab66add"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca que indica que se está ejecutando un Global Bundle Adjustement.  <a href="#ad04c8ddd2135b81fabfa45891ab66add">More...</a><br /></td></tr>
<tr class="separator:ad04c8ddd2135b81fabfa45891ab66add"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e24710761d1788f395fafc16a1a8e80"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a7e24710761d1788f395fafc16a1a8e80">mbStopGBA</a></td></tr>
<tr class="memdesc:a7e24710761d1788f395fafc16a1a8e80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca para solicitar abortar el Global Bundle Adjustment, porque se requiere iniciar otro con mejores datos.  <a href="#a7e24710761d1788f395fafc16a1a8e80">More...</a><br /></td></tr>
<tr class="separator:a7e24710761d1788f395fafc16a1a8e80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ea331d48d572c8e269c90d35c0de1e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a9ea331d48d572c8e269c90d35c0de1e7">mg2oScw</a></td></tr>
<tr class="memdesc:a9ea331d48d572c8e269c90d35c0de1e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pose de la cámara respecto del mundo en formato <a class="el" href="namespaceg2o.html">g2o</a>, de donde se obtiene <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#abbb5a5f8a46de211d46aaa6129385ac2" title="Pose de la cámara respecto del mundo, propuesta para el keyframe actual al cerrar el bucle...">LoopClosing::mScw</a>.  <a href="#a9ea331d48d572c8e269c90d35c0de1e7">More...</a><br /></td></tr>
<tr class="separator:a9ea331d48d572c8e269c90d35c0de1e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a6ee027c2c4c45fcd3811819c22953a"><td class="memItemLeft" align="right" valign="top">long unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6a6ee027c2c4c45fcd3811819c22953a">mLastLoopKFid</a></td></tr>
<tr class="separator:a6a6ee027c2c4c45fcd3811819c22953a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b5b9bb2ba5e3fe79428e4af9a002025"><td class="memItemLeft" align="right" valign="top">std::list&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b5b9bb2ba5e3fe79428e4af9a002025">mlpLoopKeyFrameQueue</a></td></tr>
<tr class="memdesc:a4b5b9bb2ba5e3fe79428e4af9a002025"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lista de nuevos keyframes a analizar para buscar bucles.  <a href="#a4b5b9bb2ba5e3fe79428e4af9a002025">More...</a><br /></td></tr>
<tr class="separator:a4b5b9bb2ba5e3fe79428e4af9a002025"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bdc72e69885435e1c4f39b759c2ec8d"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a2bdc72e69885435e1c4f39b759c2ec8d">mMutexFinish</a></td></tr>
<tr class="memdesc:a2bdc72e69885435e1c4f39b759c2ec8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">mutex para acceder a <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c" title="Marca de proceso terminado. ">LoopClosing::mbFinished</a>.  <a href="#a2bdc72e69885435e1c4f39b759c2ec8d">More...</a><br /></td></tr>
<tr class="separator:a2bdc72e69885435e1c4f39b759c2ec8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e6e898fe4e8e5f680f840d746fa5565"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a5e6e898fe4e8e5f680f840d746fa5565">mMutexGBA</a></td></tr>
<tr class="memdesc:a5e6e898fe4e8e5f680f840d746fa5565"><td class="mdescLeft">&#160;</td><td class="mdescRight">mutex para acceder a mbRunningGBA y a mbFinishedGBA.  <a href="#a5e6e898fe4e8e5f680f840d746fa5565">More...</a><br /></td></tr>
<tr class="separator:a5e6e898fe4e8e5f680f840d746fa5565"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c28fbf7b84469cd14b12f511d499533"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a3c28fbf7b84469cd14b12f511d499533">mMutexLoopQueue</a></td></tr>
<tr class="memdesc:a3c28fbf7b84469cd14b12f511d499533"><td class="mdescLeft">&#160;</td><td class="mdescRight">mutex para acceso a la cola de nuevos keyframes <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b5b9bb2ba5e3fe79428e4af9a002025" title="Lista de nuevos keyframes a analizar para buscar bucles. ">LoopClosing::mlpLoopKeyFrameQueue</a>  <a href="#a3c28fbf7b84469cd14b12f511d499533">More...</a><br /></td></tr>
<tr class="separator:a3c28fbf7b84469cd14b12f511d499533"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a979cad182a7f7bb08be165304d93106b"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a979cad182a7f7bb08be165304d93106b">mMutexReset</a></td></tr>
<tr class="memdesc:a979cad182a7f7bb08be165304d93106b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex para acceder a <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9bac1131984f7915ab1fdf220912b0b" title="Marca de solicitud de reinicialización. ">LoopClosing::mbResetRequested</a>.  <a href="#a979cad182a7f7bb08be165304d93106b">More...</a><br /></td></tr>
<tr class="separator:a979cad182a7f7bb08be165304d93106b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78c93c677c23ca7bf62a2a9652c008ff"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a78c93c677c23ca7bf62a2a9652c008ff">mnCovisibilityConsistencyTh</a></td></tr>
<tr class="separator:a78c93c677c23ca7bf62a2a9652c008ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b6bc1810ef5921462ebdeee32508118"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b6bc1810ef5921462ebdeee32508118">mpCurrentKF</a></td></tr>
<tr class="memdesc:a4b6bc1810ef5921462ebdeee32508118"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keyframe "actual", extraído de la cola de keyframes a procesar.  <a href="#a4b6bc1810ef5921462ebdeee32508118">More...</a><br /></td></tr>
<tr class="separator:a4b6bc1810ef5921462ebdeee32508118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bc11ebe6d60187d4d1708932bbb52f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame_database.html">KeyFrameDatabase</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a5bc11ebe6d60187d4d1708932bbb52f6">mpKeyFrameDB</a></td></tr>
<tr class="memdesc:a5bc11ebe6d60187d4d1708932bbb52f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntero a la base de datos de keyframes singleton.  <a href="#a5bc11ebe6d60187d4d1708932bbb52f6">More...</a><br /></td></tr>
<tr class="separator:a5bc11ebe6d60187d4d1708932bbb52f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eaa1b6d507d9bd138ab0f10a308e3c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_local_mapping.html">LocalMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a5eaa1b6d507d9bd138ab0f10a308e3c9">mpLocalMapper</a></td></tr>
<tr class="memdesc:a5eaa1b6d507d9bd138ab0f10a308e3c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntero al mapeador local singleton.  <a href="#a5eaa1b6d507d9bd138ab0f10a308e3c9">More...</a><br /></td></tr>
<tr class="separator:a5eaa1b6d507d9bd138ab0f10a308e3c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b1dabf1326afa9d6a28768fd6f498b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html">Map</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a0b1dabf1326afa9d6a28768fd6f498b4">mpMap</a></td></tr>
<tr class="memdesc:a0b1dabf1326afa9d6a28768fd6f498b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntero al mapa singleton.  <a href="#a0b1dabf1326afa9d6a28768fd6f498b4">More...</a><br /></td></tr>
<tr class="separator:a0b1dabf1326afa9d6a28768fd6f498b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53d45d3e2f0a8e0c9797079b9ae4ea37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a53d45d3e2f0a8e0c9797079b9ae4ea37">mpMatchedKF</a></td></tr>
<tr class="memdesc:a53d45d3e2f0a8e0c9797079b9ae4ea37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keyframe que machea con <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b6bc1810ef5921462ebdeee32508118" title="Keyframe &quot;actual&quot;, extraído de la cola de keyframes a procesar. ">LoopClosing::mpCurrentKF</a>.  <a href="#a53d45d3e2f0a8e0c9797079b9ae4ea37">More...</a><br /></td></tr>
<tr class="separator:a53d45d3e2f0a8e0c9797079b9ae4ea37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9d1b37eb70edbc013a431d92a4d86d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespace_o_r_b___s_l_a_m2.html#a2fafba714858cab1bb18d438e2e83c5d">ORBVocabulary</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac9d1b37eb70edbc013a431d92a4d86d1">mpORBVocabulary</a></td></tr>
<tr class="memdesc:ac9d1b37eb70edbc013a431d92a4d86d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntero al vocabulario BoW singleton.  <a href="#ac9d1b37eb70edbc013a431d92a4d86d1">More...</a><br /></td></tr>
<tr class="separator:ac9d1b37eb70edbc013a431d92a4d86d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb14401ffb2cafdcef9f0a0323db6296"><td class="memItemLeft" align="right" valign="top">std::thread *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aeb14401ffb2cafdcef9f0a0323db6296">mpThreadGBA</a></td></tr>
<tr class="memdesc:aeb14401ffb2cafdcef9f0a0323db6296"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hilo para el Global Bundle Adjustment.  <a href="#aeb14401ffb2cafdcef9f0a0323db6296">More...</a><br /></td></tr>
<tr class="separator:aeb14401ffb2cafdcef9f0a0323db6296"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3bff69250ab812292fb0a0e59cd3076"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac3bff69250ab812292fb0a0e59cd3076">mpTracker</a></td></tr>
<tr class="memdesc:ac3bff69250ab812292fb0a0e59cd3076"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntero al tracker singleton.  <a href="#ac3bff69250ab812292fb0a0e59cd3076">More...</a><br /></td></tr>
<tr class="separator:ac3bff69250ab812292fb0a0e59cd3076"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbb5a5f8a46de211d46aaa6129385ac2"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#abbb5a5f8a46de211d46aaa6129385ac2">mScw</a></td></tr>
<tr class="memdesc:abbb5a5f8a46de211d46aaa6129385ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pose de la cámara respecto del mundo, propuesta para el keyframe actual al cerrar el bucle, por LoopClosing::Computesim3, que la utiliza para buscar más macheos con <a class="el" href="class_o_r_b___s_l_a_m2_1_1_o_r_bmatcher.html#ae43d042858a3a3ca4238bb4ca519f196" title="Macheo circular entre puntos singulares detectados en el cuadro actual, y la proyección de los puntos...">ORBmatcher.SearchByProjection</a>.  <a href="#abbb5a5f8a46de211d46aaa6129385ac2">More...</a><br /></td></tr>
<tr class="separator:abbb5a5f8a46de211d46aaa6129385ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aede54de0cb62136859ccb297e890f573"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a8efed418be885643d3c43113ff1d7bb2">ConsistentGroup</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aede54de0cb62136859ccb297e890f573">mvConsistentGroups</a></td></tr>
<tr class="memdesc:aede54de0cb62136859ccb297e890f573"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector de keyframes y su grupo de pertenencia.  <a href="#aede54de0cb62136859ccb297e890f573">More...</a><br /></td></tr>
<tr class="separator:aede54de0cb62136859ccb297e890f573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9595220811b5b814d1413451ecbaa4d"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ad9595220811b5b814d1413451ecbaa4d">mvpCurrentConnectedKFs</a></td></tr>
<tr class="memdesc:ad9595220811b5b814d1413451ecbaa4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjunto de keyframes conectados por el grafo de covisibilidad.  <a href="#ad9595220811b5b814d1413451ecbaa4d">More...</a><br /></td></tr>
<tr class="separator:ad9595220811b5b814d1413451ecbaa4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd07791eb7a84ea2de2ab9d88e32d4dc"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#afd07791eb7a84ea2de2ab9d88e32d4dc">mvpCurrentMatchedPoints</a></td></tr>
<tr class="memdesc:afd07791eb7a84ea2de2ab9d88e32d4dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjunto de puntos macheados para el bucle, en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>.  <a href="#afd07791eb7a84ea2de2ab9d88e32d4dc">More...</a><br /></td></tr>
<tr class="separator:afd07791eb7a84ea2de2ab9d88e32d4dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac545f793bc68348fea584022d1daa609"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac545f793bc68348fea584022d1daa609">mvpEnoughConsistentCandidates</a></td></tr>
<tr class="memdesc:ac545f793bc68348fea584022d1daa609"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lista de keyframes candidatos a cerrar un bucle.  <a href="#ac545f793bc68348fea584022d1daa609">More...</a><br /></td></tr>
<tr class="separator:ac545f793bc68348fea584022d1daa609"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52778b54f944bab5a3580b82233e8c72"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a52778b54f944bab5a3580b82233e8c72">mvpLoopMapPoints</a></td></tr>
<tr class="memdesc:a52778b54f944bab5a3580b82233e8c72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjunto de puntos observados por el keyframe actual y sus vecinos, a considerar y fusionar en el cierre de bucle.  <a href="#a52778b54f944bab5a3580b82233e8c72">More...</a><br /></td></tr>
<tr class="separator:a52778b54f944bab5a3580b82233e8c72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Cierre de bucles. </p>
<p>Este objeto singleton ejecuta el método <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471" title="Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este ...">LoopClosing::Run</a> en un thread exclusivo. Cada vez que se agrega un keyframe al mapa (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac0c81e654509eb9384abe5e769db4f41" title="Indica si hay keyframes en la cola esperando a ser procesados. ">LoopClosing::CheckNewKeyFrames</a>), intenta detectar un bucle (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa8110ca79cebaf509e378d30e55f1381" title="Procesa los keyframes de la cola, buscando bucles. ">LoopClosing::DetectLoop</a>). Si lo detecta, computa su pose (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>), corrige el mapa (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540" title="Corrige el bucle con los encastres elaborados por LoopClosing::ComputeSim3. ">LoopClosing::CorrectLoop</a>) usando en la etapa final <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aabe9d9b913f36b607c67b0ed0df42a1d" title="Proyecta los puntos observados en la vecindad del keyframe del bucle, sobre el keyframe actual y veci...">LoopClosing::SearchAndFuse</a>.</p>
<p>Terminación del hilo, para cerrar la aplicación: 1- Un hilo externo invoca <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa271039dcafe7cc053f72ba541bc499b" title="Otro hilo solicita terminar LoopClosing. ">LoopClosing::RequestFinish</a>, que marca mbFinishedRequested 2- En el bucle principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471" title="Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este ...">LoopClosing::Run</a>, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac13b01270b4daef9be2a098f82e9f64f">LoopClosing::CheckFinish</a> informa que se ha solicitado la finalización y sale del bucle 3- Antes de terminar el hilo, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471" title="Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este ...">LoopClosing::Run</a> invoca <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aeea102bfacf8538ef605d76e4192a622" title="Hace true LoopClosing::mbFinished, para consultas de otros hilos. ">LoopClosing::SetFinish()</a>, que marca <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c" title="Marca de proceso terminado. ">LoopClosing::mbFinished</a>. 4- <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac242214c60ed66e9432e0457e3fc29ad" title="Informa a otros hilos que LoopClosing ha terminado. ">LoopClosing::isFinished()</a> informa esa marca a otros hilos que pregunten.</p>
<p>Reset: Ante una mala inicialziación, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html#a899967ca49b1c3446854ecce3873323c" title="Reinicia el sistema. ">Tracking::Reset</a> invoca <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a7dc868b9f4b8381a94aae2c85bfec3c5" title="Solicita reinicializar el proceso. ">LoopClosing::RequestReset</a>, que bloquea el hilo de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a> hasta que concluye la reinicialización de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a8efed418be885643d3c43113ff1d7bb2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef pair&lt;set&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt;,int&gt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a8efed418be885643d3c43113ff1d7bb2">ORB_SLAM2::LoopClosing::ConsistentGroup</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae9ada143a8308ce32990a7c7b5d533ab"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef map&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*,<a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a>,std::less&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt;, Eigen::aligned_allocator&lt;std::pair&lt;const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*, <a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a>&gt; &gt; &gt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9ada143a8308ce32990a7c7b5d533ab">ORB_SLAM2::LoopClosing::KeyFrameAndPose</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="af5f7b8a43efa8bc771a5227ed2fbf460"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ORB_SLAM2::LoopClosing::LoopClosing </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html">Map</a> *&#160;</td>
          <td class="paramname"><em>pMap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame_database.html">KeyFrameDatabase</a> *&#160;</td>
          <td class="paramname"><em>pDB</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespace_o_r_b___s_l_a_m2.html#a2fafba714858cab1bb18d438e2e83c5d">ORBVocabulary</a> *&#160;</td>
          <td class="paramname"><em>pVoc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>bFixScale</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Único constructor invocado por el constructor de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> para crear el singleton. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac13b01270b4daef9be2a098f82e9f64f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::CheckFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a9e3dfbee3d1635fe11e600f94b0f60dc" title="Marca que se ha solicitado la terminación de LoopClosing. ">LoopClosing::mbFinishRequested</a> En el bucle principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471" title="Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este ...">LoopClosing::Run</a>, <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac13b01270b4daef9be2a098f82e9f64f">LoopClosing::CheckFinish</a> informa si se ha solicitado la finalización. </dd></dl>

</div>
</div>
<a id="ac0c81e654509eb9384abe5e769db4f41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::CheckNewKeyFrames </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Indica si hay keyframes en la cola esperando a ser procesados. </p>
<dl class="section return"><dt>Returns</dt><dd>true si hay keyframes en la cola. </dd></dl>

</div>
</div>
<a id="ab4fcf814eed5b5dd2aec96454561b078"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::ComputeSim3 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Procesa la lista de candidatos intentando corregir su pose. </p>
<p>Si el encastre no es perfecto, los candidatos se descartan. Los encastres existosos se utilizan luego para corregir el bucle. </p>

</div>
</div>
<a id="aa007e0678582ec0de5d71280d23af540"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::CorrectLoop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Corrige el bucle con los encastres elaborados por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>. </p>

</div>
</div>
<a id="aa8110ca79cebaf509e378d30e55f1381"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::DetectLoop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Procesa los keyframes de la cola, buscando bucles. </p>
<p>Produce una lista <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ac545f793bc68348fea584022d1daa609" title="Lista de keyframes candidatos a cerrar un bucle. ">LoopClosing::mvpEnoughConsistentCandidates</a>. </p>

</div>
</div>
<a id="a680d0b255d764754841e622f5af97473"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::InsertKeyFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *&#160;</td>
          <td class="paramname"><em>pKF</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Agrega nuevos keyframes a la cola de proceso para buscar bucles. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pKF</td><td>nuevo keyframe a procesar </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ac242214c60ed66e9432e0457e3fc29ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::isFinished </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Informa a otros hilos que <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a> ha terminado. </p>

</div>
</div>
<a id="aa8efb239cd4b488b12e7f1223c308a4e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::isFinishedGBA </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#acdfbeff51644bd4c3d2d54c637d95e6c" title="Marca exactamente contraria a mbRunningGBA. ">LoopClosing::mbFinishedGBA</a></dd></dl>
<p>Sólo invocado por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540" title="Corrige el bucle con los encastres elaborados por LoopClosing::ComputeSim3. ">LoopClosing::CorrectLoop</a> </p>

</div>
</div>
<a id="a4ddc6674aa54db7d38946f73eb9776f2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::isRunningGBA </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ad04c8ddd2135b81fabfa45891ab66add" title="Marca que indica que se está ejecutando un Global Bundle Adjustement. ">LoopClosing::mbRunningGBA</a></dd></dl>
<p>Invocado sólo por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540" title="Corrige el bucle con los encastres elaborados por LoopClosing::ComputeSim3. ">LoopClosing::CorrectLoop</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html#aa934876a230dfa99e123f62b4b54d0cb" title="Solicita el cierre del sistema. ">System::Shutdown</a>. </p>

</div>
</div>
<a id="aa271039dcafe7cc053f72ba541bc499b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::RequestFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Otro hilo solicita terminar <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>. </p>

</div>
</div>
<a id="a7dc868b9f4b8381a94aae2c85bfec3c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::RequestReset </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solicita reinicializar el proceso. </p>
<p>Invocado por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html" title="Objeto único que se ejecuta en su propio Trhead, y se inicia con Run(). ">Tracking</a> cuando falla la inicialización del mapa. </p>

</div>
</div>
<a id="a288545384b48c758f910a4762c873733"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::ResetIfRequested </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reinicializa el objeto si hay una solicitud pendiente para hacerlo. </p>
<p>Invocado en cada iteración del bucle principal de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a520014f22059056d6256476bccb04471" title="Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este ...">LoopClosing::Run</a>. </p>

</div>
</div>
<a id="a520014f22059056d6256476bccb04471"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::Run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Función que se ejecuta en el hilo dedicado al cierre de bucles, y alberga el bucle principal de este proceso. </p>

</div>
</div>
<a id="a4b10a9c18541818c9490a62447ef7f18"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::RunGlobalBundleAdjustment </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>nLoopKF</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bundle adjustment sobre todo el mapa luego de cerrar el bucle. </p>

</div>
</div>
<a id="aabe9d9b913f36b607c67b0ed0df42a1d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::SearchAndFuse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9ada143a8308ce32990a7c7b5d533ab">KeyFrameAndPose</a> &amp;&#160;</td>
          <td class="paramname"><em>CorrectedPosesMap</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Proyecta los puntos observados en la vecindad del keyframe del bucle, sobre el keyframe actual y vecinos usando las poses corregidas. </p>
<p>Fusiona duplicados. </p>

</div>
</div>
<a id="aeea102bfacf8538ef605d76e4192a622"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::SetFinish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hace true <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c" title="Marca de proceso terminado. ">LoopClosing::mbFinished</a>, para consultas de otros hilos. </p>

</div>
</div>
<a id="aa27124f61055c2b5f53497e918195269"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::SetLocalMapper </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_local_mapping.html">LocalMapping</a> *&#160;</td>
          <td class="paramname"><em>pLocalMapper</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registra el mapeador local en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a5eaa1b6d507d9bd138ab0f10a308e3c9" title="Puntero al mapeador local singleton. ">LoopClosing::mpLocalMapper</a>. </p>

</div>
</div>
<a id="a20bce54d19c979511043d7c109aa741a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::LoopClosing::SetTracker </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a> *&#160;</td>
          <td class="paramname"><em>pTracker</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registra el tracker del sistema. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pTracker</td><td>puntero al tracker singleton del sistema.</td></tr>
  </table>
  </dd>
</dl>
<p>Invocado sólo por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_system.html" title="System se instancia una única vez en main, en la variable SLAM. ">System</a> durante su construcción.</p>
<p>El puntero al tracker no se usa. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a6d8de49d49b647c33f3616f4cc95c42c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbFinished</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca de proceso terminado. </p>

</div>
</div>
<a id="acdfbeff51644bd4c3d2d54c637d95e6c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbFinishedGBA</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca exactamente contraria a mbRunningGBA. </p>
<p>No agrega información. </p>

</div>
</div>
<a id="a9e3dfbee3d1635fe11e600f94b0f60dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbFinishRequested</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca que se ha solicitado la terminación de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>. </p>

</div>
</div>
<a id="a11865c48bbad102b5177e4350de71bd4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbFixScale</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Siempre false en monocular. </p>

</div>
</div>
<a id="ae9bac1131984f7915ab1fdf220912b0b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbResetRequested</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca de solicitud de reinicialización. </p>
<p>Sólo el tracker solicita la reinicialización del singleton <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html" title="Cierre de bucles. ">LoopClosing</a>, cuando falló la inicialización del mapa. </p>

</div>
</div>
<a id="ad04c8ddd2135b81fabfa45891ab66add"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbRunningGBA</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca que indica que se está ejecutando un Global Bundle Adjustement. </p>
<p>Se marca al final de Loopclosing::CorrectLoop y se pone en false al final de Loopclosing::RunGlobalBundleAdjustment. Se informa mediante Loopclosing::isRunningGBA. </p>

</div>
</div>
<a id="a7e24710761d1788f395fafc16a1a8e80"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::LoopClosing::mbStopGBA</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca para solicitar abortar el Global Bundle Adjustment, porque se requiere iniciar otro con mejores datos. </p>

</div>
</div>
<a id="a9ea331d48d572c8e269c90d35c0de1e7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structg2o_1_1_sim3.html">g2o::Sim3</a> ORB_SLAM2::LoopClosing::mg2oScw</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Pose de la cámara respecto del mundo en formato <a class="el" href="namespaceg2o.html">g2o</a>, de donde se obtiene <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#abbb5a5f8a46de211d46aaa6129385ac2" title="Pose de la cámara respecto del mundo, propuesta para el keyframe actual al cerrar el bucle...">LoopClosing::mScw</a>. </p>

</div>
</div>
<a id="a6a6ee027c2c4c45fcd3811819c22953a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">long unsigned int ORB_SLAM2::LoopClosing::mLastLoopKFid</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a4b5b9bb2ba5e3fe79428e4af9a002025"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::list&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt; ORB_SLAM2::LoopClosing::mlpLoopKeyFrameQueue</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Lista de nuevos keyframes a analizar para buscar bucles. </p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_local_mapping.html" title="LocalMapping tiene una única instancia ejecutando el método Run en su propio thread. ">LocalMapping</a> crea keyframes y los agrega a esta lista mediante <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a680d0b255d764754841e622f5af97473" title="Agrega nuevos keyframes a la cola de proceso para buscar bucles. ">LoopClosing::InsertKeyFrame</a>. <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa8110ca79cebaf509e378d30e55f1381" title="Procesa los keyframes de la cola, buscando bucles. ">LoopClosing::DetectLoop</a> los procesa en orden de llegada. </p>

</div>
</div>
<a id="a2bdc72e69885435e1c4f39b759c2ec8d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::LoopClosing::mMutexFinish</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>mutex para acceder a <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a6d8de49d49b647c33f3616f4cc95c42c" title="Marca de proceso terminado. ">LoopClosing::mbFinished</a>. </p>

</div>
</div>
<a id="a5e6e898fe4e8e5f680f840d746fa5565"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::LoopClosing::mMutexGBA</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>mutex para acceder a mbRunningGBA y a mbFinishedGBA. </p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b10a9c18541818c9490a62447ef7f18" title="Bundle adjustment sobre todo el mapa luego de cerrar el bucle. ">LoopClosing::RunGlobalBundleAdjustment</a> detiene las consultas isFinishedGBA e isRunningGBA mientras propaga el resultado del GBA a los nuevos keyframes que pudieran haber surgido durante su cómputo.</p>
<p>Se asume que estas consultas "is" las realiza el mapeador local. </p>

</div>
</div>
<a id="a3c28fbf7b84469cd14b12f511d499533"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::LoopClosing::mMutexLoopQueue</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>mutex para acceso a la cola de nuevos keyframes <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b5b9bb2ba5e3fe79428e4af9a002025" title="Lista de nuevos keyframes a analizar para buscar bucles. ">LoopClosing::mlpLoopKeyFrameQueue</a> </p>

</div>
</div>
<a id="a979cad182a7f7bb08be165304d93106b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::LoopClosing::mMutexReset</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mutex para acceder a <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ae9bac1131984f7915ab1fdf220912b0b" title="Marca de solicitud de reinicialización. ">LoopClosing::mbResetRequested</a>. </p>

</div>
</div>
<a id="a78c93c677c23ca7bf62a2a9652c008ff"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::LoopClosing::mnCovisibilityConsistencyTh</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a4b6bc1810ef5921462ebdeee32508118"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>* ORB_SLAM2::LoopClosing::mpCurrentKF</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Keyframe "actual", extraído de la cola de keyframes a procesar. </p>
<p>Efímero. </p>

</div>
</div>
<a id="a5bc11ebe6d60187d4d1708932bbb52f6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame_database.html">KeyFrameDatabase</a>* ORB_SLAM2::LoopClosing::mpKeyFrameDB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntero a la base de datos de keyframes singleton. </p>

</div>
</div>
<a id="a5eaa1b6d507d9bd138ab0f10a308e3c9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_local_mapping.html">LocalMapping</a>* ORB_SLAM2::LoopClosing::mpLocalMapper</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntero al mapeador local singleton. </p>
<p>El proceso de cierre de bucle interactía con el mapeador local solamente para solicitar pausa y reanudación, de manera de no interferir en el mapa. </p>

</div>
</div>
<a id="a0b1dabf1326afa9d6a28768fd6f498b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html">Map</a>* ORB_SLAM2::LoopClosing::mpMap</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntero al mapa singleton. </p>

</div>
</div>
<a id="a53d45d3e2f0a8e0c9797079b9ae4ea37"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>* ORB_SLAM2::LoopClosing::mpMatchedKF</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Keyframe que machea con <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b6bc1810ef5921462ebdeee32508118" title="Keyframe &quot;actual&quot;, extraído de la cola de keyframes a procesar. ">LoopClosing::mpCurrentKF</a>. </p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a> encuentra el keyframe y lo registra en esta variable. Efímero. </p>

</div>
</div>
<a id="ac9d1b37eb70edbc013a431d92a4d86d1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespace_o_r_b___s_l_a_m2.html#a2fafba714858cab1bb18d438e2e83c5d">ORBVocabulary</a>* ORB_SLAM2::LoopClosing::mpORBVocabulary</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntero al vocabulario BoW singleton. </p>

</div>
</div>
<a id="aeb14401ffb2cafdcef9f0a0323db6296"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::thread* ORB_SLAM2::LoopClosing::mpThreadGBA</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Hilo para el Global Bundle Adjustment. </p>

</div>
</div>
<a id="ac3bff69250ab812292fb0a0e59cd3076"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html">Tracking</a>* ORB_SLAM2::LoopClosing::mpTracker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntero al tracker singleton. </p>
<p>No se usa. </p>

</div>
</div>
<a id="abbb5a5f8a46de211d46aaa6129385ac2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::LoopClosing::mScw</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Pose de la cámara respecto del mundo, propuesta para el keyframe actual al cerrar el bucle, por LoopClosing::Computesim3, que la utiliza para buscar más macheos con <a class="el" href="class_o_r_b___s_l_a_m2_1_1_o_r_bmatcher.html#ae43d042858a3a3ca4238bb4ca519f196" title="Macheo circular entre puntos singulares detectados en el cuadro actual, y la proyección de los puntos...">ORBmatcher.SearchByProjection</a>. </p>

</div>
</div>
<a id="aede54de0cb62136859ccb297e890f573"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a8efed418be885643d3c43113ff1d7bb2">ConsistentGroup</a>&gt; ORB_SLAM2::LoopClosing::mvConsistentGroups</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Vector de keyframes y su grupo de pertenencia. </p>
<p>Efímero. </p>

</div>
</div>
<a id="ad9595220811b5b814d1413451ecbaa4d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt; ORB_SLAM2::LoopClosing::mvpCurrentConnectedKFs</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Conjunto de keyframes conectados por el grafo de covisibilidad. </p>
<p>Se usa en un cierre de bucle, para corregir sus poses y sus grafos. Vector efímero utilizado solamente en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540" title="Corrige el bucle con los encastres elaborados por LoopClosing::ComputeSim3. ">LoopClosing::CorrectLoop</a>. </p>

</div>
</div>
<a id="afd07791eb7a84ea2de2ab9d88e32d4dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::LoopClosing::mvpCurrentMatchedPoints</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Conjunto de puntos macheados para el bucle, en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>. </p>
<p><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aa007e0678582ec0de5d71280d23af540" title="Corrige el bucle con los encastres elaborados por LoopClosing::ComputeSim3. ">LoopClosing::CorrectLoop</a> lo utiliza para cerrar el bucle. Es un vector efímero. </p>

</div>
</div>
<a id="ac545f793bc68348fea584022d1daa609"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt; ORB_SLAM2::LoopClosing::mvpEnoughConsistentCandidates</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Lista de keyframes candidatos a cerrar un bucle. </p>
<p>Vector efímero. </p>

</div>
</div>
<a id="a52778b54f944bab5a3580b82233e8c72"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::LoopClosing::mvpLoopMapPoints</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Conjunto de puntos observados por el keyframe actual y sus vecinos, a considerar y fusionar en el cierre de bucle. </p>
<p>Se define completamten en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#ab4fcf814eed5b5dd2aec96454561b078" title="Procesa la lista de candidatos intentando corregir su pose. ">LoopClosing::ComputeSim3</a>, y se utiliza en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#aabe9d9b913f36b607c67b0ed0df42a1d" title="Proyecta los puntos observados en la vecindad del keyframe del bucle, sobre el keyframe actual y veci...">LoopClosing::SearchAndFuse</a>. Es un vector efímero. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/include/<a class="el" href="_loop_closing_8h_source.html">LoopClosing.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/src/<a class="el" href="_loop_closing_8cc.html">LoopClosing.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_o_r_b___s_l_a_m2.html">ORB_SLAM2</a></li><li class="navelem"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html">LoopClosing</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
